package com.warm.base.design.b_iterator;

/**
 * @Date: 2019/11/27 16:04
 * @Author: LChuang
 * @Description: 迭代模式
 *
 *      提供一种方法顺序访问一个聚合对象中各个元素，而又不需暴露该对象的内部表示。
 */
public class Client {

    /**
     *  Iterator 抽象迭代器 该角色责任定义按顺序逐个遍历元素的接口。
     *  ConcreteIterator 实现 该角色负责实现Iterator角色所定义的接口.该角色包含了遍历集合所必须的信息。
     *  Aggregate 抽象容器 该角色负责定义创建Iterator角色的接口。
     *  ConcreteAggregate 实现 该角色负责实现Aggregate角色所定义的接口
     */
    /**
     *    1 访问一个聚合的对象，而不需要暴露对象的内部表示
     * 　　2 支持对聚合对象的多种遍历
     * 　　3 对遍历不同的对象，提供统一的接口。
     */
    public static void main(String[] args) {
        ConcreteAggregate aggregate = new ConcreteAggregate();
        aggregate.add("a");
        aggregate.add("b");
        aggregate.add("c");
        Iterator it = aggregate.iterator();
        while (it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
        }
    }
}
